<?php
class TICE_Controlador_ListaArquivos extends Zend_Controller_Action {
	
	/**
	 * A o caminho da pasta a ser listada 
	 * @var string
	 */
	public $caminho;
	
	function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array() ) {
		parent::__construct($request, $response, $invokeArgs);
		if (empty($this->caminho)) {
			$this->caminho = BASE_PATH . '/arquivos';
		}
	}
	/**
	 * Recupera a lista de todos os registros
	 * @param int $_GET['p'] pagina
	 * @param int $_GET['l'] limite
	 * @param int $_GET['view'] o script de visualização
	 * @return Zend_Db_Table_Rowset_Abstract $this->view->rs
	 */
	public function listaAction() {
		$di = new DirectoryIterator($this->caminho);
		$rs = array();
		foreach ($di as $arquivo) {
			if (!$arquivo->isFile()) {
				continue;
			}
			$rs[] = $arquivo->__toString();
		}
		$total = count($rs);
		
		// lida paginação
		$pagina = $this->_getParam('p');
		if (empty($pagina)) {
			$pagina = 1;
		} 
		$limite = $this->_getParam('l');
		if (empty($limite)) {
			$limite = 0;
		}
		$offset = ($pagina - 1) * $limite;
		if ($limite > 0) {
			$rs = array_slice($rs, $offset, $limite);
		}
		
		// escolhe uma view pelo $_REQUEST
		$view = $this->_getParam('view');
		if (!empty($view)) {
			$this->_helper->layout()->disableLayout();
			$this->_helper->viewRenderer($view, null, true);
			
			// coloca os arquivos em um array
			$arquivos = array();
			foreach ($rs as $arquivo) {
				$arquivos[] = array('arquivo' => $arquivo);
			}
			
	    	$this->view->objeto = $arquivos;
		}
		

		// adiciona as informações na view
		$request = $this->getRequest();
		$this->view->url = $request->getControllerName() . '/' . $request->getActionName();
		$this->view->rs = $rs;
		$this->view->pagina = $pagina;
		$this->view->limite = $limite;
		$this->view->total = $total;
		if ($limite == 0) {
			$this->view->totalPaginas = 1;
		}
		else {
			$this->view->totalPaginas = ceil($total / $limite);
		}
		// disabilta o layout quando a requisição for assíncrona
		if ($this->getRequest()->isXmlHttpRequest()) {
			$this->_helper->layout()->disableLayout();
		}
		
		return $rs;
	}
	
	public function templateAction() {
		$this->_helper->layout()->disableLayout();
	}
	
}